In the realm of handheld computer systems (commonly referred to as personal digital assistants or PDAs), it is not uncommon for a data set to exist and be maintained both on the PDA and on at least one other computing device. For example, a user may maintain a calendar or address book on both his or her PDA and on another computer system (e.g., a personal computer system such as a desktop or laptop).
The entries in the data set can be referred to as records or data objects. When a change is made to a record in the data set residing on one device (hereinafter, also referred to as a node), it is desirable to have the data set on the other node be updated as well, so that the data set is synchronized on both nodes. Accordingly, processes have been developed to facilitate synchronizing the data sets on both nodes. These synchronization (“sync”) processes are known in the art.
Currently, each record in a data set may be identified by a unique record identifier (record ID). To prevent duplication of record IDs, the task of assigning IDs to records is relegated to the PDA.
Generally, synchronization is performed using either a “slow sync” technique or a “fast sync” technique. Using a slow sync, all of the records are transferred between nodes; the data set on one node is transferred to the other. The records in each data set are then compared in order to determine which records have changed since the last sync, and the respective data sets are updated accordingly.
Fast syncs are accommodated by tagging records when they are modified. Typically, a bit associated with each record is set to one value or another to indicate whether or not that record has been changed since the last sync; the bits that have been set are often referred to as “dirty” bits. Using a fast sync, only the changes made to the data set on each node since the last sync are transferred to the other node. After the fast sync is performed, the dirty bits are cleared.
Although fast syncs are preferred, there are occasions when slow syncs need to be performed. For instance, it is becoming more common for people to use more than one computer system. Many people use a computer system at home and another one at work, for example. If a user performs a fast sync between the PDA and one of the computer systems, the dirty bits would be cleared. Consequently, the records on the PDA that have changed cannot be identified using the dirty bits. Therefore, a subsequent sync between the PDA and another computer system will use a slow sync to identify changes made to the records since the last time these latter two nodes had been synched.
Thus, one problem with the common synchronization techniques is that slow syncs are occurring more frequently as a growing number of people interact with multiple computer systems with their PDA. Slow syncs take longer to complete than fast syncs, and so they are less desirable. Also, the time needed to complete slow syncs is increasing as memory sizes increase for PDAs.
Another issue with typical synchronization techniques is that they are limited with respect to the different types of syncs that can now occur. Traditionally, synchronization occurs between a PDA and one or more personal computer systems as described above. However, the paradigm in which the PDA serves in essence as the nexus between the user's home and office computer systems is not as applicable as it once was. As computer systems are networked, multiple communication pathways between PDAs and computer systems can exist, and synchronization between multiple devices needs to be supported. The notion of a single source (e.g., the PDA) for record IDs is not as workable as before.
Also, records are frequently shared between users and quite often are distributed and stored across many nodes. Some records may be accessible by multiple users working from different nodes. In any event, different users may update a record in different ways, and the modified record may be distributed over different pathways. Along the way, the record may be further modified. As a result, different versions of the same record may reach a node, causing a conflict to arise as to which version of the record should take precedence over another. Using contemporary synchronization techniques, these records are unnecessarily replicated at the destination node, slowing down syncs while consuming memory. User intervention is then usually required to glean which records are correct and which can be discarded.